package com.itheima.controller;

import com.itheima.pojo.Dept;
import com.itheima.pojo.Result;
import com.itheima.service.DeptService;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

//@Slf4j
@Slf4j
//处理用户请求
@RestController
//公共路径
@RequestMapping("/depts")
public class DeptController {

    @Autowired
    private DeptService deptService;

    /***
     * 修改数据
     */
    @PutMapping
    public Result update(@RequestBody Dept dept){
        log.info("修改部门信息:{}",dept);
        //调用Service完成修改
        return Result.success(deptService.update(dept));
    }

    /****
     * 回显查询部门信息   路径参数   /depts/1    /depts/9    /depts/5
     */
    @GetMapping("/{id}")
    public Result getById(@PathVariable("id") Integer id){
        log.debug("根据ID查询部门信息，ID:{}",id);
        // 调用Service实现查询
        return Result.success(deptService.getById(id));
    }


    /***
     * @RequestMapping:写到方法上，等同于该方法接收所有提交方式，比如GET、POST、PUT、DELETE、OPTIONS....
     */


    /***
     * 添加部门
     *  application/json: {"name":"财务部"}
     *  @RequestBody:能接收前端的JSON数据，并转成对应的实体类
     */
    @PostMapping
    public Result add(@RequestBody Dept dept){
        log.info("新增部门信息:{}",dept);
        //调用Service实现新增
        return Result.success(deptService.add(dept));
    }


    /***
     * 方式一：HttpServletRequest  根据ID删除部门信息
     * 方式二：@RequestParam  根据ID删除部门信息
     * 方式三：直接将前端传入的参数作为方法参数即可  根据ID删除部门信息【推荐】
     */
    @DeleteMapping
    public Result delete(Integer id){
        //调用service实现删除
        return Result.success(deptService.delete(id));
    }


    //public Result deleteRequestParam(@RequestParam("id")Integer id){
    public Result deleteRequestParam(@RequestParam(required = false) Integer id){
        System.out.println(id);
        return Result.success();
    }

    public Result deleteHttpServletRequest(HttpServletRequest request){
        //获取数据
        String id = request.getParameter("id");
        int idNumber = Integer.parseInt(id);
        System.out.println(idNumber);
        return Result.success();
    }


    /***
     * 查询所有部门
     * GET方式
     */
    //@RequestMapping("/depts")
    @GetMapping
    public Result findAll(){
        // 调用Serivce
        return Result.success(deptService.findAll());
    }
}
